/**
 * @description 自定义路由拦截
 */

import { useLoginStore } from '@/stores/login'

// 黑名单, 需要登录才能进的页面
const blackList = [
    '/pages/index/index',
]

export default async function() {
	const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
	const loginStore = useLoginStore()
	// 用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
	list.forEach(item => {
		uni.addInterceptor(item, {
			invoke(args) {
				// 获取要跳转的页面路径（url去掉"?"和"?"后的参数）
				const url = args.url.split('?')[0]

				//判断当前窗口是黑名单，如果是则重定向路由
				const flag = blackList.some(it => it === url)

				// 不是白名单并且没有登录
				if (flag && !loginStore.isLogin) {
					uni.showToast({
						title: '请先登录',
						icon: 'none'
					})
					uni.reLaunch({
						url: '/pages/login/index'
					});
					return false
				}
				return args
			},
			fail(err) { // 失败回调拦截
				console.log(err)
			}
		})
	})
}
